package com.epoint.nio;

import org.junit.Test;

import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class ChannelDemo {

    /**
     * 读取文件数据到buffer
     */
    @Test
    public void test1() throws Exception {
        // 创建channel
        RandomAccessFile file = new RandomAccessFile("Y:\\Git学习资料\\netty-learning\\测试文件.txt", "rw");

        FileChannel channel = file.getChannel();

        // 创建buffer
        ByteBuffer buffer = ByteBuffer.allocate(10);

        // 通过channel读取文件数据到buff里
//        int read = channel.read(buffer);
        // 一次读10字节
        while (channel.read(buffer) != -1){
            // 切到 读模式
            buffer.flip();

            // 这里其实可以直接写出去，这里演示打印出来
            while(buffer.hasRemaining()){
                // 一个字节一个字节的获取
                System.out.println((char) buffer.get());
            }

            // 切到 写模式
            buffer.clear();

        }

        channel.close();
    }

}
